Revert "Replace for loop with iterators"
authorAlex Crichton <alex@alexcrichton.com>
Mon, 29 Aug 2016 16:30:14 +0000 (09:30 -0700)
committerGitHub <noreply@github.com>
Mon, 29 Aug 2016 16:30:14 +0000 (09:30 -0700)
src/cargo/core/resolver/encode.rs

index fc2c2773786552a2521f1f114d074eb390d8c13b..1f79fbdc47755e1fbdd1fa3af23f7a4fe6c94f0b 100644 (file)
@@ -96,15 +96,18 @@ impl EncodableResolve {
             g
         };
 
-        let replacements: HashMap<_, _> = try!(live_pkgs.values()
-            .filter_map(|&(ref id, pkg)| pkg.replace.as_ref().and_then(|replace| {
-                assert!(pkg.dependencies.is_none());
-                match lookup_id(replace) {
-                    Err(e) => Some(Err(e)),
-                    Ok(None) => None,
-                    Ok(Some(replace)) => Some(Ok((id.clone(), replace)))
+        let replacements = {
+            let mut replacements = HashMap::new();
+            for &(ref id, ref pkg) in live_pkgs.values() {
+                if let Some(ref replace) = pkg.replace {
+                    assert!(pkg.dependencies.is_none());
+                    if let Some(replace_id) = try!(lookup_id(replace)) {
+                        replacements.insert(id.clone(), replace_id);
+                    }
                 }
-            })).collect());
+            }
+            replacements
+        };
 
         let mut metadata = self.metadata.unwrap_or(BTreeMap::new());